package demo3;



abstract class TestDemo2 implements ITest {
    public abstract void TestDemo2();

}

class Test2 extends TestDemo2 {

    @Override
    public void testA() {

    }

    @Override
    public void TestDemo2() {

    }
}


public class TestDemo implements ITest{
    @Override
    public void testA() {
        System.out.println("重写test()");
    }

    @Override
    public void defaultMethod() {
        System.out.println("重写的defaultMethod()");
    }
}

class Test {
    public static void main(String[] args) {
        ITest.staticMethod();
        //TestDemo testDemo = new TestDemo();
        //testDemo.defaultMethod();//被继承下来的部分，子类访问父类成员方法，(就近原则，不太准确对于成员方法)
        ITest iTest = new TestDemo();//发生向上转型
        iTest.defaultMethod();//没有重写default修饰的方法，父类引用调用自己独有的方法
                                //重写后调用重写的方法

    }
}